package com.fengkai.filepost.pdfoutstream.test.ODsolutions;

/**
 * @author Fengkai
 * @creat 2023/4/12
 * 题目
 * 有一个数列 a[N] (N=60)，从 a[0]开始，每一项都是一个数字。数列中 a[n+1]都是 a[n]的描述。其中 a[0]=1。
 * 规则如下：
 * a[0]:1
 * a[1]:11(含义：其前一项 a[0]=1 是 1 个 1，即“11”。表示 a[0]从左到右，连续出现了 1 次“1”）
 * a[2]:21(含义：其前一项 a[1]=11，从左到右：是由两个 1 组成，即“21”。表示 a[1]从左到右，连续出现了两次“1”)
 * a[3]:1211(含义：其前一项 a[2]=21，从左到右：是由一个 2 和一个 1 组成，即“1211”。表示 a[2]从左到右，连续出现了 1 次“2”，然后又连续出现了 1 次“1”)
 * a[4]:111221(含义：其前一项 a[3]=1211，从左到右：是由一个 1、一个 2、两个 1 组成，即“111221”。表示 a[3]从左到右，连续出现了 1 次“1”，连续出现了 1 次“2”，连续出现了两次“1”)
 * 请输出这个数列的第 n 项结果（a[n]，0≤n≤59）。
 */
public class ArraysDescription {
    public static void main (String[] args) {
        System.out.println(description(3));
        System.out.println(description(4));
        System.out.println(description(5));
        System.out.println(description(6));
        System.out.println(description(7));

    }

    public static String description (int n) {
        String a1 = "1";
        String tmp = "1";
        String out = "";
        if (n == 0) {
            return tmp;
        }

        for (int i = 1; i <= n; i++) {
            int left = 0;
            int right = left;
            int size = 0;
            char c = ' ';
            StringBuilder stringBuilder = new StringBuilder();
            while (left < tmp.length() && right < tmp.length()) {
                if (tmp.charAt(left) == tmp.charAt(right)) {
                    c = tmp.charAt(left);
                    right++;
                    if (right == tmp.length()) {
                        size = right - left;
                        stringBuilder.append(size == 0 ? 1 : size).append(c);
                        left = right;
                    }
                } else {
                    size = right - left;
                    stringBuilder.append(size == 0 ? 1 : size).append(c);
                    left = right;
                }
            }
            tmp = stringBuilder.toString();
        }
        return tmp;
    }
}
